home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac Format 1995 June
/
MacFormat 25.iso
/
Shareware City
/
Developers
/
OutOfPhase1.1 Source
/
OutOfPhase Folder
/
ASTBinaryOperator.h
< prev
next >
Wrap
Text File
|
1994-05-07
|
2KB
|
81 lines
/* ASTBinaryOperator.h */
#ifndef Included_ASTBinaryOperator_h
#define Included_ASTBinaryOperator_h
/* ASTBinaryOperator module depends on */
/* MiscInfo.h */
/* Audit */
/* Debug */
/* Definitions */
/* ASTExpression */
/* TrashTracker */
/* Memory */
/* PcodeObject */
/* CompilerRoot */
/* PromotableTypeCheck */
#include "PcodeObject.h"
#include "CompilerRoot.h"
struct ASTBinaryOpRec;
typedef struct ASTBinaryOpRec ASTBinaryOpRec;
/* all memory allocated in this module is through TrashTracker */
/* binary operator operations */
typedef enum
{
eBinaryAnd EXECUTE(= -6623),
eBinaryOr,
eBinaryXor,
eBinaryLessThan,
eBinaryLessThanOrEqual,
eBinaryGreaterThan,
eBinaryGreaterThanOrEqual,
eBinaryEqual,
eBinaryNotEqual,
eBinaryPlus,
eBinaryMinus,
eBinaryMultiplication,
eBinaryImpreciseDivision,
eBinaryIntegerDivision,
eBinaryIntegerRemainder,
eBinaryShiftLeft,
eBinaryShiftRight,
eBinaryArraySubscripting,
eBinaryExponentiation,
eBinaryResizeArray
} BinaryOpType;
/* forwards */
struct TrashTrackRec;
struct ASTExpressionRec;
/* create a new binary operator */
ASTBinaryOpRec* NewBinaryOperator(BinaryOpType Operation,
struct ASTExpressionRec* LeftArgument,
struct ASTExpressionRec* RightArgument,
struct TrashTrackRec* TrashTracker, long LineNumber);
/* type check the binary operator node. this returns eCompileNoError if */
/* everything is ok, and the appropriate type in *ResultingDataType. */
CompileErrors TypeCheckBinaryOperator(DataTypes* ResultingDataType,
ASTBinaryOpRec* BinaryOperator, long* ErrorLineNumber,
struct TrashTrackRec* TrashTracker);
/* find out just what kind of binary operation this is */
BinaryOpType BinaryOperatorWhichOne(ASTBinaryOpRec* TheBinOp);
/* get the left hand side operand out of a binary operator record */
struct ASTExpressionRec* GetLeftOperandForBinaryOperator(ASTBinaryOpRec* TheBinOp);
/* get the right hand side operand out of a binary operator record */
struct ASTExpressionRec* GetRightOperandForBinaryOperator(ASTBinaryOpRec* TheBinOp);
/* generate code for a binary operator. returns True if successful, or False if it fails. */
MyBoolean CodeGenBinaryOperator(struct PcodeRec* FuncCode,
long* StackDepthParam, ASTBinaryOpRec* BinaryOperator);
#endif